﻿using System;
using System.Linq;
using Mandarine.Controls;
using Microsoft.Phone.Shell;
using Resources;

namespace Mandarine.Controls.ApplicationBar
{
    /// <summary>
    /// アプリケーションバー用拡張メソッドを提供するクラス
    /// </summary>
    public static class AppBarExtensions
    {
        /// <summary>
        /// アプリケーションバーから配下のIApplicationBarMenuItemを探して取得します
        /// </summary>
        /// <param name="appBar">アプリケーションバーのインスタンスをセット</param>
        /// <param name="type">アプリケーションバーアイテムの形(ボタン|メニュー)をセット</param>
        /// <param name="id">検索するID値をセット</param>
        /// <returns>IApplicationBarMenuItem</returns>
        public static IApplicationBarMenuItem FindItem(this IApplicationBar appBar
            , AppBarItemType type, string id)
        {
            if (appBar == null)
                throw new ArgumentNullException(CommonResource.APPLICATIONBAR_NOT_FOUND);

            IApplicationBarMenuItem found = null;

            switch (type)
            {
                case AppBarItemType.Button:
                    found = appBar.Buttons.Cast<IApplicationBarMenuItem>().FirstOrDefault(item => item.Text == id);
                    break;
                case AppBarItemType.MenuItem:
                    found = appBar.MenuItems.Cast<IApplicationBarMenuItem>().FirstOrDefault(item => item.Text == id);
                    break;
                default:
                    throw new ArgumentException(CommonResource.APPLICATIONBAR_ITEMTYPE_NOT_SUPPORTED);
            }

            return found;
        }
    }
}
